Typically, an IBM Personal Computer (PC) contains processing system has a Basic Input/Output System (BIOS) installed as firmware. Firmware is a software program that is embedded in a read-only storage device, i.e., a Read-Only Memory (ROM). The primary function of the BIOS is to prepare the processing system so that other software programs stored on various storage media (magnetic disks, optical disks such as compact disks or DVDs, tapes, etc.) can be loaded and executed, and assume control of the processing system. This process is known as booting up.
FIG. 1 is a high-level block diagram showing the architecture of a traditional IBM PC Compatible processing system. According to the depiction of FIG. 1, the processing system includes one or more processors 101 coupled to a bus system 104. The bus system 104 is an abstraction that represents any one or more physical buses and/or point-to-point connections. The processors 101 are the central processing units (CPUs) of the processing system and, thus control the overall operation of the processing system. A BIOS 111 is stored as firmware in a Read-Only Memory (ROM) 103, which is coupled to the bus system 104. Programmable Read-Only Memory (PROM) or Erasable Programmable Read-Only Memory (EPROM) has often been used to store BIOS because these forms of ROM are writable under certain conditions. Thus, the BIOS stored therein may be easily upgraded. A Random Access Memory (RAM) 102 is also coupled to the bus system 14. The function of the RAM 102 is to store program code and data during normal operation of the processing system, i.e., after boot up. Both the RAM 102 and ROM 103 are “system memories” directly accessible by the processor 101.
Also connected to the processors 101 through the bus system 104 are storage adapters 105 connecting to a group of external storage media such as hard drives 106, floppy disks 107, CDs 108, Universal Serial Bus (USB) flash memories 109, DVDs and/or tapes (not shown). These external storage media may also be called “boot media” because they may store Operating Systems (OSs) 113 and boot loaders (or bootstrap loaders) 112. A boot loader is a special small program, which does not have the full functionality of an OS, but is tailor-made to load the OS to start. Traditionally, a boot loader is customized for a particular OS, and is stored in boot media together with the OS. A boot loader may consist of several stages, the master boot record (MBR), the stage 1, the stage 2 and the loader. The MBR contains a partition table and may reside at the first sector of a disk. The stage 1 may start at the first sector of an active partition, and load the usage 1 which may occupy several sectors. Stage 2 brings in the final stage, the loader.
A storage adapter is one type of Input/Output control device. The term “external” is used in the present application to distinguish storage media such as hard drives, floppy disk, CDs, USB flash memories, DVDs and tapes from “system memory”, e.g., the RAM 102 and “system flash memory”, e.g., the ROM 103. The critical difference between an external storage media and the system memory (and system flash memory) is that a processor has to communicate with (read/write) the external storage media through the control of a storage adapter. By contrast, the processor can access (read or write) system memory and/or system flash memory directly without having to go through any I/O control device.
The term “load”, “loads” or “loading” used in the present application refers to reading instructions and/or data from a source storage medium, including any external storage media and/or the ROM 103, into the RAM 102 so that the processors 101 may execute these instructions and access the data.
Also shown in FIG. 1 is a network adapter 110, which allows the processing system to communicate with remote devices. The network adapter 110 may be, for example, an Ethernet adapter or a Fibre Channel adapter.
FIG. 2 is a flow diagram illustrating a traditional boot process of the processing system shown in FIG. 1. Upon booting up, at block 201, the processors 101 run the instructions of the BIOS start-up program stored in ROM 103. This program runs a Power-On Self Test (POST) to check the devices of the processing system are functioning; it also initializes these devices. At block 202, the BIOS loads a boot loader 112 from one of the boot media, i.e., the hard drives 106, floppy disks 107, CDs 108, USB flash memories 109, DVDs, or tapes, and passes control to the boot loader 112. At block 203, the boot loader 112, being executed by the processors 101, loads an OS 113, normally the OS stored on the same medium as the boot loader, and passes control to the OS 113.
A drawback of the above approach is that the boot medium storing the boot loader may get corrupted or become defective, because a boot medium is usually writeable during the normal course of use/operation (as a result of mechanical or electrical disturbances, for example). If corruption or defect occurs, the BIOS is then unable to load a boot loader and the system stops very early during the boot process. At this stage, the processing system usually requires the boot medium to be fixed.